// 用于创建Vuex中最核心的store

// 引入Vue
import Vue from 'vue'
// 引入vuex
import Vuex from 'vuex'
// 在Vue中应用Vuex插件
Vue.use(Vuex)

//引入外部的person.js
import personOptions from './person'

// Count组件相关配置写在index.js中
const countOptions = {
    namespaced:true, //开启命名空间，默认是false
    //响应组件动作
    actions:{
        // context：上下文对象，value：dispatch传过来的参数n
        jia:function(context,value){
            context.commit('JIA',value)  
        },
        jian(context,value){
            context.commit('JIAN',value)
        },
        //进行逻辑判断
        jiaOdd(context,value){
            console.log('jiaOdd处理中。。。')
            context.dispatch('demo1',value)
        },
        demo1(context,value){
            console.log('demo1处理。。。')
            context.dispatch('demo2',value)
        },
        demo2(context,value){
            console.log('demo2执行commit。。。')
            if(context.state.sum % 2){
                context.commit('JIA',value)
            }
        },
        jiaWait(context,value){
            setTimeout(() => {
                context.commit('JIA',value)
            },500)
        }
    },
    // 准备mutations——用于操作数据state
    mutations:{
        JIA(state,value){
            state.sum += value
        },
        JIAN(state,value){
            state.sum -= value
        },
    },
    state:{
        sum:0, // 当前的和
        school:'尚硅谷',
        subject:'前端',
    },
    getters:{
        //可以拿到state
        bigSum(state){
            return state.sum * 10
        }
    },
}



// 创建并暴露store
export default new Vuex.Store({
    modules:{
        countAbout:countOptions,
        personAbout:personOptions

    }
})